/**   
 * @Title: NumberFormatTemplate.java 
 * @Package cn.com.gome.frame.template 
 * @Description: 数据格式化模板 
 * @author chenmin-ds   
 * @date 2015年2月27日 下午3:12:00 
 * @company cn.com.gome
 * @version V1.0   
 */

package com.gomeplus.frame.template;

import freemarker.template.TemplateMethodModel;
import freemarker.template.TemplateModelException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.List;

/**
 * @ClassName: NumberFormatTemplate
 * @Description: 数据掩码格式化模板
 * @author chenmin-ds
 * @date 2015年2月27日 下午3:12:00
 */
public class DataMaskFormatTemplate implements TemplateMethodModel {

	private Logger logger = LoggerFactory.getLogger("DataMaskFormatTemplate");
	
	/**
	 * @param arguments .get(0) 要格式化隐藏的字段值
	 * @param arguments .get(1) 转换类型: none 代表用其它符号代友字符中的值
	 * @param arguments .get(2) 开始位
	 * @param arguments .get(3) 结束位
	 * @param arguments .get(4) 替换字符值
	 */
	@Override
    @SuppressWarnings("rawtypes")
	public Object exec(List arguments) throws TemplateModelException {
		try{
			String v = arguments.get(0).toString();
			String t = arguments.get(1).toString();
			int s = Integer.valueOf(arguments.get(2).toString());
			int e = Integer.valueOf(arguments.get(3).toString());
			String vt = arguments.get(4).toString();
			StringBuffer r = new StringBuffer();
			if("none".equals(t)){
				if(e == 0 || e > v.length()){
					if(s == 0){
						for(int i = 0 ; i < v.length() ; i ++){
							r.append(vt);
						}
					}else{
						r.append(v.substring(0, s));
						for(int i = s ; i < v.length() ; i ++){
							r.append(vt);
						}
					}
				}else{
					r.append(v.substring(0, s));
					for(int i = s ; i < e ; i ++){
						r.append(vt);
					}
					r.append(v.substring(e, v.length()));
				}
			}
			return r.toString();
		}catch(Exception e){
			logger.error("数据掩码格式化模板，格式化掩码异常：{}", e.getMessage());
		}
		return "";
	}
}
